package cn.edu.lzzy.utils;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;

import java.util.HashMap;
import java.util.Map;

public class AspectUtils {
    private static final String ARG_TOKEN="token";

    public static Map<String,Object> getParas(JoinPoint point){
        Object[] args=point.getArgs();
        Map<String,Object> map=new HashMap<>(args.length);
        String[] names=((MethodSignature)point.getSignature()).getParameterNames();

        for(int i=0;i<names.length;i++){
            map.put(names[i],args[i]);
        }
        return map;
    }

    public static String getArgToken(ProceedingJoinPoint point){
        String token=null;
        Map<String,Object> map=AspectUtils.getParas(point);
        if(map.containsKey(ARG_TOKEN))
            token=map.get(ARG_TOKEN).toString();
        //完成没有token值的实现,在else分支中实现从JSON字符中提取token数据

        //Apache Superset:数据可视化工具
        //Halo基于Spring的开源建站工具

     return token;
    }
}
